import router from '@/router'
import store from '@/store'
import NProgess from 'nprogress'
import 'nprogress/nprogress.css'

const whiteList = ['/login', '/404'] // 白名单，这些页面不需要权限，直接放行

router.beforeEach(async function(to, from, next) {
  // 获取token
  const token = store.state.user.token
  NProgess.start()
  //  判断是否含有token
  if (token) {
    // 如果有token需要获取用户信息
    // 如果用户信息不存在再去获取用户信息
    // 使用await阻塞代码，等待数据获取到以后再去跳转路由
    if (!store.getters.userId) {
      await store.dispatch('user/fetchUserInfo')
    }
    if (to.path === '/login') {
      next('/')
    } else {
      next()
    }
  } else { // 没有token
    if (whiteList.includes(to.path)) {
      // 如果在白名单，放过通行
      next()
    } else {
      next('/login')
    }
  }
  NProgess.done() // 手动强制关闭一次  为了解决 手动切换地址时  进度条的不关闭的问题
})

router.afterEach(function() {
  NProgess.done() // 关闭滚动条
})
